package in.controller.handler.base; import android.app.Fragment; import in.data.stream.base.Stream; import in.lib.utils.Debug; import in.rob.client.fragment.base.StreamFragment; import lombok.Getter; import lombok.Setter; public abstract class StreamResponseHandler<T extends Stream> extends ResponseHandler { @Getter private boolean append; @Getter @Setter private T stream; public StreamResponseHandler(boolean append) { this.append = append; } @Override public void onSend() { super.onSend(); getFragment().setLoading(true); } @Override public StreamFragment getFragment() { return ((StreamFragment)super.getFragment()); } @Override public void onFinish(boolean failed) { if (getFragment() instanceof StreamResponseListener) { if (failed) { Debug.out("Response failed"); Debug.out(getConnectionInfo()); Debug.out(getContent()); stream = null; } if (getFragment() != null) { getFragment().setLoading(false); ((StreamResponseListener)getFragment()).handleResponse(stream, append); detachResponse(); } else { Debug.out("Waiting for fragment to reattach"); setOnFragmentAttachedListener(new OnFragmentAttachedListener() { @Override public void onFragmentAttached(Fragment fragment) { getFragment().setLoading(false); ((StreamResponseListener)getFragment()).handleResponse(stream, append); setOnFragmentAttachedListener(null); detachResponse(); } }); } } } }